﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

//struct stu
//{
//	char a;
//	int i;
//	char b;
//};
//
//int main()
//{
//	printf("%zd\n", sizeof(struct stu));//12
//	return 0;
//}

//struct S2
//{
//	char c1;
//	char c2;
//	int i;
//};
//
//
//
//int main()
//{
//	printf("%zd\n", sizeof(struct S2));//8
//	return 0;
//}


//struct S3
//{
//	double d;
//	char c;
//	int i;
//};

//int main()
//{
//	printf("%zd\n", sizeof(struct S3));//16
//	return 0;
//}

//struct S3
//{
//	double d;
//	char c;
//	int i;
//};
//
//
//struct S4
//{
//	char c1;
//	struct S3 s3;
//	double d;
//};
//
//int main()
//{
//	printf("%zd\n", sizeof(struct S4));//32
//	return 0;
//}

//#pragma pack(1)//设置默认对⻬数为1 
//struct S
//{
//	char a;
//	int i;
//	char b;
//};
//#pragma pack()//取消设置的对⻬数，还原为默认 
//int main()
//{
//	//输出的结果是什么？ 
//	printf("%zd\n", sizeof(struct S));//6
//	return 0;
//}


////struct S
////{
////	int arr[10];
////	int i;
////};
////struct S s = { {1,2,3,4}, 100 };//全局变量
//////结构体传参 
////void print1(struct S s)
////{
////	printf("%d\n", s.i);
////}
//////结构体地址传参 
////void print2(struct S* ps)
////{
////	printf("%d\n", ps->i);//这个我们在（上）提过了
////}
////int main()
////{
////	print1( s);
////	print2(&s);
////	return 0;
////}

//struct S
//{
//	int _a : 2;
//	int _b : 5;
//	int _c : 10;
//	int _d : 30;
//};

//struct S
//{
//	char a : 3;
//	char b : 4;
//	char c : 5;
//	char d : 4;
//};

//int main()
//{
//	struct S s = { 0 };
//	s.a = 10;
//	s.b = 12;
//	s.c = 3;
//	s.d = 4;
//	return 0;
//}

struct S
{
	char a : 3;
	char b : 4;
	char c : 5;
	char d : 4;
};

int main()
{
	struct S sa = { 0 };
	scanf("%d", &sa.b);//这是错误的 

	//正确的⽰范 
	int b = 0;
	scanf("%d", &b);
	sa.b = b;
	return 0;
}